﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestGenerator
{
    enum ContainerFormatType
    {
        Invalid,
        DIF,
        AVI
    }

    enum VideoCodecType
    {
        Invalid,
        Uncompressed,
        DV
    }

    enum AudioCodecType
    {
        Invalid,
        Uncompressed
    }

    class ContainerFormat
    {
        private ContainerFormatType type;

        public ContainerFormat()
        {
            this.Type = ContainerFormatType.Invalid;
        }

        public ContainerFormatType Type
        {
            get { return this.type; }
            protected set { this.type = value; }
        }
    }

    class ContainerFormatDIF : ContainerFormat
    {
        public ContainerFormatDIF()
        {
            this.Type = ContainerFormatType.DIF;
        }
    }

    class VideoCodec
    {
        private VideoCodecType codecType;

        public VideoCodec()
        {
            this.Type = VideoCodecType.Invalid;
        }

        public VideoCodecType Type
        {
            get { return this.codecType; }
            protected set { this.codecType = value; }
        }

        public VideoCodec CreateFromString(string str)
        {
            throw new NotImplementedException();
        }
    }

    class VideoCodecDV : VideoCodec
    {
        public VideoCodecDV()
        {
            this.Type = VideoCodecType.DV;
        }
    }

    class AudioCodec
    {
        private AudioCodecType codecType;

        public AudioCodec()
        {
            this.Type = AudioCodecType.Invalid;
        }

        public AudioCodecType Type
        {
            get { return this.codecType; }
            protected set { this.codecType = value; }
        }
    }

    class AudioCodecUncompressed : AudioCodec
    {
        public AudioCodecUncompressed()
        {
            this.Type = AudioCodecType.Uncompressed;
        }
    }

    class AVFormat
    {
        private ContainerFormat containerFormat;
        private VideoCodec videoCodec;
        private AudioCodec audioCodec;

    }
}
